package com.ruoyi.system.service.impl;

import java.util.List;

import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.DateUtils;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.BaseGoodsMapper;
import com.ruoyi.system.domain.BaseGoods;
import com.ruoyi.system.service.IBaseGoodsService;

import javax.annotation.Resource;

/**
 * 【请填写功能名称】Service业务层处理
 *
 * @author ruoyi
 * @date 2025-10-27
 */
@Service
public class BaseGoodsServiceImpl extends ServiceImpl<BaseGoodsMapper, BaseGoods> implements IBaseGoodsService
{
    @Resource
    private BaseGoodsMapper baseGoodsMapper;

    /**
     * 查询【请填写功能名称】
     *
     * @param goodsId 【请填写功能名称】主键
     * @return 【请填写功能名称】
     */
    @Override
    public BaseGoods selectBaseGoodsByGoodsId(Long goodsId)
    {
        return baseGoodsMapper.selectBaseGoodsByGoodsId(goodsId);
    }

    /**
     * 查询【请填写功能名称】列表
     *
     * @param baseGoods 【请填写功能名称】
     * @return 【请填写功能名称】
     */
    @Override
    public List<BaseGoods> selectBaseGoodsList(BaseGoods baseGoods)
    {
        return baseGoodsMapper.selectBaseGoodsList(baseGoods);
    }

    /**
     * 新增【请填写功能名称】
     *
     * @param baseGoods 【请填写功能名称】
     * @return 结果
     */
    @Override
    public int insertBaseGoods(BaseGoods baseGoods)
    {
        baseGoods.setCreateTime(DateUtils.getNowDate());
        return baseGoodsMapper.insertBaseGoods(baseGoods);
    }

    /**
     * 修改【请填写功能名称】
     *
     * @param baseGoods 【请填写功能名称】
     * @return 结果
     */
    @Override
    public int updateBaseGoods(BaseGoods baseGoods)
    {
        baseGoods.setUpdateTime(DateUtils.getNowDate());
        return baseGoodsMapper.updateBaseGoods(baseGoods);
    }

    /**
     * 批量删除【请填写功能名称】
     *
     * @param goodsIds 需要删除的【请填写功能名称】主键
     * @return 结果
     */
    @Override
    public int deleteBaseGoodsByGoodsIds(Long[] goodsIds)
    {
        return baseGoodsMapper.deleteBaseGoodsByGoodsIds(goodsIds);
    }

    /**
     * 删除【请填写功能名称】信息
     *
     * @param goodsId 【请填写功能名称】主键
     * @return 结果
     */
    @Override
    public int deleteBaseGoodsByGoodsId(Long goodsId)
    {
        return baseGoodsMapper.deleteBaseGoodsByGoodsId(goodsId);
    }

    @Override
    public boolean buy(BaseGoods baseGoods) {
        BaseGoods baseGoods1 = baseGoodsMapper.selectBaseGoodsByGoodsId(baseGoods.getGoodsId());
        if (baseGoods1.getNum() <= 0) {
            throw new ServiceException("库存不足");
        }
        return update(new LambdaUpdateWrapper<BaseGoods>()
                .setSql("num=(num-1)")
                .setSql("version=(version+1)")
                .gt(BaseGoods::getNum, 0)
                .eq(BaseGoods::getGoodsId, 1));
    }
}
